﻿'
' Boogaloo® - http://www.mindfly.com
' Copyright (c) 2008
' by Mindfly, Inc.
'
' Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated 
' documentation files (the "Software"), to deal in the Software without restriction, including without limitation 
' the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and 
' to permit persons to whom the Software is furnished to do so, subject to the following conditions:
'
' The above copyright notice and this permission notice shall be included in all copies or substantial portions 
' of the Software.
'
' THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES,
' INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
' DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
' SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
' SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
' WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
' THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.


Imports System.Configuration
Imports System.Web
Imports System.Web.Configuration

Namespace Configuration


    Public MustInherit Class ConfigurationBase

        ''' <summary>
        ''' Returns the default connection string name for the Boogaloo.Core providers
        ''' </summary>
        Public Shared ReadOnly Property DefaultConnectionStringName() As String
            Get
                Return Globals.Settings.defaultConnectionStringName
            End Get
        End Property

        ''' <summary>
        ''' Returns the default CacheDuration used by Boogaloo.Core providers
        ''' </summary>
        Public Shared ReadOnly Property DefaultCacheDuration() As Integer
            Get
                Return Globals.Settings.DefaultCacheDuration
            End Get
        End Property

        ''' <summary>
        ''' Returns the default smtp server used to send mail
        ''' </summary>
        Public Shared ReadOnly Property SmtpServer() As String
            Get
                Return Globals.Settings.SmtpServer
            End Get
        End Property

        ''' <summary>
        ''' Returns the EnableLogging setting
        ''' </summary>
        Public Shared ReadOnly Property EnableLogging() As Boolean
            Get
                Return Globals.Settings.EnableLogging
            End Get
        End Property


        ''' <summary>
        ''' Returns the VirtualPath
        ''' </summary>
        Public Shared ReadOnly Property VirtualPath() As String
            Get
                Dim virtual_path As String = HttpContext.Current.Request.ApplicationPath
                If Not virtual_path.EndsWith("/") Then virtual_path &= "/"
                Return virtual_path
            End Get
        End Property

        ''' <summary>
        ''' Returns the path the the embedded controls master
        ''' </summary>
        Public Shared ReadOnly Property EmbeddedControlsMaster() As String
            Get
                Return Globals.Settings.EmbeddedControlsMaster
            End Get
        End Property

        ''' <summary>
        ''' Returns the path to the configured Log file directory
        ''' </summary>
        Public Shared ReadOnly Property LogFileDirectory() As String
            Get
                Return Globals.Settings.LogFileDirectory
            End Get
        End Property


        ''' <summary>
        ''' Quick access to the APIs collection
        ''' </summary>
        Public Shared ReadOnly Property APIs() As APICollection
            Get
                Return Globals.Settings.APIs
            End Get
        End Property


        Public Shared Function GetTranslatedConfigurationUrl(ByVal url As String) As String

            ' [[Boogaloo.site_root]]
            If url.Contains("[[Boogaloo.site_root]]") Then url = url.Replace("[[Boogaloo.site_root]]", HttpContext.Current.Request.Url.Authority & VirtualPathUtility.ToAbsolute(VirtualPath))

            Return url
        End Function

    End Class


End Namespace